2章 データモデルとクエリ言語
データモデルはソフトウェアの開発をするにあたって、ソフトウェアの開発だけでなく解決しようとする問題に対する考え方に対して極めて重大な影響力を持っている、最も重要な部分。
多くのアプリケーションはいくつかのデータモデルのレイヤーを積み重ねることで構築されている。
リレーショナルモデルとドキュメントモデル
最も知られているデータモデルはSQLのデータモデルであるリレーショナルデータモデル
リレーショナルデータモデルはビジネスデータの処理(トランザクション処理とバッチ処理)にある。
NoSQL
NoSQLデータベース採用拡大の要因
RDBで実現できる以上のスケーラビリティ
フリーでオープンなソフトウェア
RDBではうまくサポートされない特殊なクエリ操作
予見できる範囲ではRDBは幅広い非RDBと併せて使っていくことになる(ポリグロリットパーシステンス:複数モデルによる永続化)
リレーショナルデータベースとドキュメントデータベース
ドキュメントデータベース
スキーマの柔軟性
ローカリティによる優れたパフォーマンス
リレーショナルデータベース
多対多の扱いや厳格な型
データのためのクエリ言語
宣言的
SQL
CSS
XSL
命令的
IMS
CODASYL
MapReduce
大量のデータを多くのマシンを使ってまとめて処理するためのプログラミングモデル
宣言的と命令的の中間で多くの関数型プログラミング言語のmap(collect)とreduce(fold or inject)を基盤に持つ
グラフ型のデータモデル
頂点(モードやエンティティ)と辺(エッジや関係、弧)で構成される。
プロパティグラフ
構成要素
ユニークな識別子
外向きの辺の集合
内向きの辺の集合
プロパティのコレクション(キーと値のペア)
トリプルストアモデル
構成要素
主語
述語
目的語